<?php
/**
 * Clear        系统核心-验证码
 * @copyright   Copyright(c) 2024-2034
 * @author      tianjie <527707665@qq.com>
 * @link        http://www.tinphp.com/
 * @version     4.1
 */

namespace tian;

class Clear
{
    public static $config = [
        //临时文件目录(缓存)
        'path' => '',
        //临时文件类型
        'type' => ['cache', 'log', 'views']
    ];

    public function __construct()
    {
        self::$config['path'] = (new App())->getRuntimePath();
    }

    /**
     * @desc 删除文件
     * @param string $type 类型 all|cache|log|views
     * @return bool
     */
    public static function del(string $type): bool
    {
        if (in_array($type, self::$config['type'])) {
            $filename = self::$config['path'] . $type;
            self::delDirAndFile($filename);
        } elseif ($type == 'all') {
            $filename = self::$config['path'];
            self::delDirAndFile($filename);
        } else {
            return false;
        }
        return true;
    }

    /**
     * 删除目录及目录下所有文件或删除指定文件
     * @param string $path 待删除目录路径
     * @param int|bool $delDir 是否删除目录，1或true删除目录，0或false则只删除文件保留目录（包含子目录）
     * @return void
     */
    private static function delDirAndFile(string $path, $delDir = FALSE)
    {
        $handle = opendir($path);
        if ($handle) {
            while (false !== ($item = readdir($handle))) {
                if ($item != "." && $item != "..")
                    is_dir("$path/$item") ? self::delDirAndFile("$path/$item", $delDir) : unlink("$path/$item");
            }
            closedir($handle);
            if ($delDir) {
                rmdir($path);
            }
        } else {
            if (file_exists($path)) {
                unlink($path);
            }
        }
    }

}

